package com.pinganfu.mock.server;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

/**
 * 
 * @author lijiaxiang059
 *
 */
public class ChatClient extends Frame {
	
  Socket s = null;
  DataOutputStream dos = null;
  DataInputStream dis = null;
  private boolean bConnected = false;

  TextField tfTxt = new TextField();
  TextArea taContent = new TextArea();

  Thread tRecv = new Thread(new RecvThread());

  public static void main(String[] args) {
    new ChatClient().launchFrame(8082);
  }
  
  public void launchFrame(int port) {
    setLocation(400, 300);
    this.setSize(500, 500);
    
    add(tfTxt, BorderLayout.SOUTH);
    add(taContent, BorderLayout.NORTH);
    pack();
    this.addWindowListener(new WindowAdapter() {

      @Override
      public void windowClosing(WindowEvent arg0) {
        disconnect();
        System.exit(0);
      }

    });
    tfTxt.addActionListener(new TFListener());
    setVisible(true);
    connect(port);

    tRecv.start();
  }

  
  //创建连接端口
  public void connect(int port) {
    try {
      s = new Socket("10.59.33.49", port);
      dos = new DataOutputStream(s.getOutputStream());
      dis = new DataInputStream(s.getInputStream());
      System.out.println("~~~~~~~~连接成功~~~~~~~~!");
      bConnected = true;
    } catch (UnknownHostException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

  }

  public void disconnect() {
    try {
      dos.close();
      dis.close();
      s.close();
    } catch (IOException e) {
      e.printStackTrace();
    }

  }

  private class TFListener implements ActionListener {

    public void actionPerformed(ActionEvent e) {
      String str = tfTxt.getText().trim();
      tfTxt.setText("");

      try {
        dos.writeUTF(str);
        dos.flush();
        
      } catch (IOException e1) {
        e1.printStackTrace();
      }

    }

  }

  private class RecvThread implements Runnable {

    public void run() {
      try {
        while (bConnected) {
          String str = dis.readUTF();
          taContent.setText(taContent.getText() + str + '\n');
          
          System.out.println("---------------服务器返回数据------------\n"+str);
        }
      } catch (SocketException e) {
        System.out.println("退出了，bye!");
      } catch (EOFException e) {
        System.out.println("退出了，bye!");
      } catch (IOException e) {
        e.printStackTrace();
      }

    }

  }
}
